In the fields of digital mobile communications and speech storage, speech coding apparatuses are used which compress speech information to encode with high efficiency for utilization of radio signals and storage media. Among them, the system based on a CELP (Code Excited Linear Prediction) system is carried into practice widely for the apparatuses operating at medium to low bit rates. The technology of the CELP is described in “Code-excited Linear Prediction (CELP):High-quality Speech at Very Low Bit Rates”, Proc. ICASSP-85, 25.1.1., pp.937-940, 1985 by M. R. Schroeder and B. S. Atal.
In the CELP type speech coding system, speech signals are divided into predetermined frame lengths (about 5 ms to 50 ms), linear prediction of the speech signals is performed for each frame, the prediction residual (excitation vector signal) obtained by the linear prediction for each frame is encoded using an adaptive code vector and random code vector comprised of known waveforms. The adaptive code vector is selected to be used from an adaptive codebook storing previously generated excitation vectors, and the random code vector is selected to be used from a random codebook storing the predetermined number of pre-prepared vectors with predetermined forms. Examples used as the random code vectors stored in the random codebook are random noise sequence vectors and vectors generated by arranging a few pulses at different positions.
An algebraic codebook is one of representative examples of a type of random codebook that arranges a few pulses at different positions. Specific contents regarding the algebraic codebook is described, for example, in ITU-T Recommendation G.729.
A conventional example of a random code vector generator using the algebraic codebook is explained specifically below with reference to FIG. 1.
FIG. 1 is a basic block diagram of the random code vector generator using the algebraic code book. In FIG. 1, adder 3 adds a pulse generated in first pulse generator 1 and another pulse generated in second pulse generator 2, two pulses are arranged at different positions, and thereby the random code vector is generated. FIGS. 2 and 3 illustrate specific examples of the algebraic codebook. FIG. 2 illustrates an example that two pulses are arranged in 80 samples, and FIG. 3 illustrates another example that three pulses are arranged in 80 samples. In addition, in FIGS. 2 and 3, the number described under each table is indicative of the number of combinations of pulse positions.
In the above-described conventional random code vector generator using the algebraic code book, however, a search position of each excitation pulse is independent, and a relative position relationship between an excitation pulse and another excitation pulse is not utilized. Therefore, it is possible to generate random code vectors with various forms, while a large number of bits are needed to sufficiently represent a pulse position, resulting in a problem that the codebook is not always efficient when forms of random code vectors to be generated have some tendency. Further, in order to decrease the number of bits required for the algebraic codebook, there is considered a method of decreasing the number of excitation pulses. This method, however, provides another problem that subjective qualities greatly deteriorate at an unvoiced segment and stationary noise segment due to a few numbers of excitation pulses. Furthermore, in order to improve subjective qualities at the unvoiced segment and stationary noise segment, there is considered a method of performing mode switching of excitation. This method, however, has a problem when a mode determination error occurs.